In the past, color management systems have been provided in computer systems to assure consistency of results in color images that are produced with various types of color input and output devices. More particularly, each type of input and output device for a computer operates in accordance with a characteristic color space. For example, monitors typically display colors as combinations of red, blue and green, and are therefore considered to operate in an RGB color space. In contrast, the color space that is employed in printers is defined by the types of inks or toners used in these devices. Typically, these inks are based upon the colors cyan, magenta, yellow and black. Consequently, printers are considered to work in a CMYK color space.
As a result of the different color spaces that are employed in various input and output devices, the same image reproduced on two different devices may have perceptively different appearances. These differences are particularly noticeable for an image which is displayed on a monitor and printed by a color printer. To correct for these differences between devices which employ respectively different color spaces, color management systems have been employed in computers which are designed to work with color graphic images. Generally speaking, a color management system provides for matching of the color characteristics of one device, such as a monitor, with those of another device, such as a printer, to provide consistent results regardless of the particular input or output device that is being used. One example of a color management system which provides this type of service is ColorSync.TM., developed by Apple Computer, Inc. of Cupertino, Calif. Further information regarding the structure and operation of this system can be found in U.S. patent application Ser. No. 07/854,309, filed Mar. 19, 1992 and entitled "Color Matching Apparatus and Method", the disclosure of which is incorporated herein by reference.
A color management system of this type provides a consistent, common interface for matching the characteristics of various types of input and output devices that are used to read and generate color images. It provides a collection of services, namely a set of color management utilities and functions, that are independent of application programs running on a computer. As a result, a coherent, unified solution to the color matching problem is presented upon input and output of image data, regardless of the application programs which are being used to process that data.
To date, this application-independent collection of services has been limited to color management functions, most notably color matching. It is desirable to extend the functionality of a color management system to other types of image processing operations. However, these other types of image processing operations differ from color management in the way in which they handle the image data. More particularly, color-based functions, such as color matching, operate on images for correcting color data for one picture element, or pixel, at a time. Even functions which support the transfer of data for an entire image at one time must operate on that data one pixel at a time. In contrast, other types of image processing operations such as image compression, unsharp masking, ink trapping and other spatial processes require that multiple pixels of the image be processed at one time. Services that operate on one pixel at a time, such as color matching utilities, do not support these other types of operations.
Some color graphics application programs include a facility which enables image processing functions to be added thereto. For example, a filter might be plugged into an application program to enable aliasing effects or other types of defects, such as scratches in a scanned photograph, to be removed. Typically, such a filter is designed for one particular application program, and can not be used with other color graphics programs. If it is desirable to use the filter with other programs, it has to be redesigned for each different program with which it is to be used.
Unfortunately, not all application programs provide the same types of image processing services. For example, one program may offer compression, while another can include filters for unsharp masking or the like. If the user desires to have both of these functions carried out with respect to an image, it is necessary to switch between the two application programs to do so. There is no unified set of functions which provides a user with access to all of the desirable image processing services.
Furthermore, in the past each item of image processing capability was plugged into the basic application program as an add-on module, and thereby added to the overall size of the program. As a result, application programs that provided a number of image processing capabilities became large and inefficient.
It is therefore desirable to extend the functionality of color management systems in a manner that enables most, if not all, color image processing services to be provided in a unified, coherent manner. It is further desirable to provide such capabilities through a single interface, or bottleneck, to the computer's operating system, so that the same types of services are available to any application program, as well as provide for the capability for distributed processing of an image.